package com.woniuxy.util;

import com.nimbusds.jose.*;
import com.nimbusds.jose.crypto.MACSigner;

import java.util.HashMap;

/**
 * @author ：CuiYC
 * @description：
 * @date ：Created in 2025/3/10 15:45
 * @modified By：
 */
public class JWTTest {
    public static void main(String[] args) throws JOSEException {
        /**
         * 创建jwt
         *      创建头部
         *      创建负载
         *
         * 加密算法
         *      可逆
         *      不可逆
         *      对称：只有一个密钥
         *      非对称：一个密钥，一个公钥。
         */
        //1.创建头部(加密方式，常量）
        JWSHeader header = new JWSHeader.Builder(JWSAlgorithm.HS256)//加密算法（对称加密）
                .type(JOSEObjectType.JWT).build();//常量
//        System.out.println(header.toBase64URL());
        //2.创建载荷（用户名，密码）
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("username","laoma");
        hashMap.put("id",1);
        Payload payload = new Payload(hashMap);
//        System.out.println(payload.toBase64URL());

        //3.创建签名 = （头部，载荷，密钥）加密
        JWSObject jwsObject = new JWSObject(header, payload);
        String secretKey = "天王盖地虎，宝塔镇河妖";//密钥
        JWSSigner jwsSigner = new MACSigner(secretKey);
        jwsObject.sign(jwsSigner);//加密方法
//        System.out.println(jwsObject.serialize());

        String jwt = jwsObject.serialize();
        System.out.println(jwt);
    }
}
